{
 "metadata": {
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3",
   "language": "python"
  },
  "language_info": {
   "name": "python",
   "version": "3.10.12",
   "mimetype": "text/x-python",
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "pygments_lexer": "ipython3",
   "nbconvert_exporter": "python",
   "file_extension": ".py"
  },
  "kaggle": {
   "accelerator": "gpu",
   "dataSources": [],
   "dockerImageVersionId": 30616,
   "isInternetEnabled": true,
   "language": "python",
   "sourceType": "notebook",
   "isGpuEnabled": true
  }
 },
 "nbformat_minor": 4,
 "nbformat": 4,
 "cells": [
  {
   "cell_type": "code",
   "source": [
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import sklearn\n",
    "import pandas as pd\n",
    "import os\n",
    "import sys\n",
    "import time\n",
    "from tqdm.auto import tqdm\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "print(sys.version_info)\n",
    "for module in mpl, np, pd, sklearn, torch:\n",
    "    print(module.__name__, module.__version__)\n",
    "    \n",
    "device = torch.device(\"cuda:0\") if torch.cuda.is_available() else torch.device(\"cpu\")\n",
    "print(device)\n",
    "\n",
    "seed = 42\n",
    "torch.manual_seed(seed)\n",
    "torch.cuda.manual_seed_all(seed)\n"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:41.040886Z",
     "iopub.execute_input": "2023-12-08T03:56:41.041914Z",
     "iopub.status.idle": "2023-12-08T03:56:41.055773Z",
     "shell.execute_reply.started": "2023-12-08T03:56:41.041868Z",
     "shell.execute_reply": "2023-12-08T03:56:41.054673Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:28.006900Z",
     "start_time": "2025-02-27T04:06:27.998567Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sys.version_info(major=3, minor=12, micro=3, releaselevel='final', serial=0)\n",
      "matplotlib 3.10.0\n",
      "numpy 1.26.4\n",
      "pandas 2.2.3\n",
      "sklearn 1.6.1\n",
      "torch 2.6.0+cu118\n",
      "cuda:0\n"
     ]
    }
   ],
   "execution_count": 53
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 准备数据"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "source": [
    "from tensorflow import keras\n",
    "#用karas有的数据集imdb，电影分类,分电影是积极的，还是消极的\n",
    "imdb = keras.datasets.imdb\n",
    "#载入数据使用下面两个参数\n",
    "vocab_size = 10000  #词典大小，仅保留训练数据中前10000个最经常出现的单词，低频单词被舍弃\n",
    "index_from = 3  #0,1,2,3空出来做别的事\n",
    "#前一万个词出现词频最高的会保留下来进行处理，后面的作为特殊字符处理，\n",
    "# 小于3的id都是特殊字符，下面代码有写\n",
    "# 需要注意的一点是取出来的词表还是从1开始的，需要做处理\n",
    "(train_data, train_labels), (test_data, test_labels) = imdb.load_data(\n",
    "    num_words = vocab_size, index_from = index_from)"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:41.057859Z",
     "iopub.execute_input": "2023-12-08T03:56:41.058565Z",
     "iopub.status.idle": "2023-12-08T03:56:46.434050Z",
     "shell.execute_reply.started": "2023-12-08T03:56:41.058535Z",
     "shell.execute_reply": "2023-12-08T03:56:46.433226Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:32.418148Z",
     "start_time": "2025-02-27T04:06:28.073478Z"
    }
   },
   "outputs": [],
   "execution_count": 54
  },
  {
   "cell_type": "code",
   "source": [
    "print(\"train\", train_data.shape, train_labels.shape)\n",
    "print(\"test\", test_data.shape, test_labels.shape)"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:46.437383Z",
     "iopub.execute_input": "2023-12-08T03:56:46.437705Z",
     "iopub.status.idle": "2023-12-08T03:56:46.443644Z",
     "shell.execute_reply.started": "2023-12-08T03:56:46.437678Z",
     "shell.execute_reply": "2023-12-08T03:56:46.442614Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:32.423627Z",
     "start_time": "2025-02-27T04:06:32.419212Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train (25000,) (25000,)\n",
      "test (25000,) (25000,)\n"
     ]
    }
   ],
   "execution_count": 55
  },
  {
   "cell_type": "code",
   "source": [
    "#载入词表，看下词表长度，词表就像英语字典\n",
    "word_index = imdb.get_word_index()\n",
    "print(len(word_index))\n",
    "print(type(word_index))\n",
    "#词表虽然有8万多，但是我们只载入了最高频的1万词！！！！"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:46.444961Z",
     "iopub.execute_input": "2023-12-08T03:56:46.445332Z",
     "iopub.status.idle": "2023-12-08T03:56:46.510542Z",
     "shell.execute_reply.started": "2023-12-08T03:56:46.445297Z",
     "shell.execute_reply": "2023-12-08T03:56:46.509651Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:32.474929Z",
     "start_time": "2025-02-27T04:06:32.424648Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "88584\n",
      "<class 'dict'>\n"
     ]
    }
   ],
   "execution_count": 56
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 构造 word2idx 和 idx2word"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "source": [
    "word2idx = {word: idx + 3 for word, idx in word_index.items()}\n",
    "word2idx.update({\n",
    "    \"[PAD]\": 0,     # 填充 token\n",
    "    \"[BOS]\": 1,     # begin of sentence\n",
    "    \"[UNK]\": 2,     # 未知 token\n",
    "    \"[EOS]\": 3,     # end of sentence\n",
    "})\n",
    "\n",
    "idx2word = {idx: word for word, idx in word2idx.items()}"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:46.513002Z",
     "iopub.execute_input": "2023-12-08T03:56:46.513314Z",
     "iopub.status.idle": "2023-12-08T03:56:46.555553Z",
     "shell.execute_reply.started": "2023-12-08T03:56:46.513267Z",
     "shell.execute_reply": "2023-12-08T03:56:46.554594Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:32.508303Z",
     "start_time": "2025-02-27T04:06:32.475953Z"
    }
   },
   "outputs": [],
   "execution_count": 57
  },
  {
   "cell_type": "code",
   "source": [
    "# 选择 max_length\n",
    "length_collect = {}\n",
    "for text in train_data:\n",
    "    length = len(text)\n",
    "    length_collect[length] = length_collect.get(length, 0) + 1\n",
    "    \n",
    "MAX_LENGTH = 500\n",
    "plt.bar(length_collect.keys(), length_collect.values())\n",
    "plt.axvline(MAX_LENGTH, label=\"max length\", c=\"gray\", ls=\":\")\n",
    "plt.legend()\n",
    "plt.show()"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:46.556688Z",
     "iopub.execute_input": "2023-12-08T03:56:46.557006Z",
     "iopub.status.idle": "2023-12-08T03:56:48.567816Z",
     "shell.execute_reply.started": "2023-12-08T03:56:46.556979Z",
     "shell.execute_reply": "2023-12-08T03:56:48.566872Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:33.583257Z",
     "start_time": "2025-02-27T04:06:32.509312Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 58
  },
  {
   "cell_type": "markdown",
   "source": [
    "## Tokenizer"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "source": [
    "class Tokenizer:\n",
    "    def __init__(self, word2idx, idx2word, max_length=500, pad_idx=0, bos_idx=1, eos_idx=3, unk_idx=2):\n",
    "        self.word2idx = word2idx\n",
    "        self.idx2word = idx2word\n",
    "        self.max_length = max_length\n",
    "        self.pad_idx = pad_idx\n",
    "        self.bos_idx = bos_idx\n",
    "        self.eos_idx = eos_idx\n",
    "        self.unk_idx = unk_idx\n",
    "    \n",
    "    def encode(self, text_list, padding_first=False):\n",
    "        \"\"\"如果padding_first == True，则padding加载前面，否则加载后面\"\"\"\n",
    "        max_length = min(self.max_length, 2 + max([len(text) for text in text_list]))\n",
    "        indices_list = []\n",
    "        for text in text_list:\n",
    "            indices = [self.bos_idx] + [self.word2idx.get(word, self.unk_idx) for word in text[:max_length-2]] + [self.eos_idx] #直接切片取前max_length-2个单词，然后加上bos和eos\n",
    "            if padding_first:\n",
    "                indices = [self.pad_idx] * (max_length - len(indices)) + indices\n",
    "            else:\n",
    "                indices = indices + [self.pad_idx] * (max_length - len(indices))\n",
    "            indices_list.append(indices)\n",
    "        return torch.tensor(indices_list)\n",
    "    \n",
    "    \n",
    "    def decode(self, indices_list, remove_bos=True, remove_eos=True, remove_pad=True, split=False):\n",
    "        text_list = []\n",
    "        for indices in indices_list:\n",
    "            text = []\n",
    "            for index in indices:\n",
    "                word = self.idx2word.get(index, \"[UNK]\")\n",
    "                if remove_bos and word == \"[BOS]\":\n",
    "                    continue\n",
    "                if remove_eos and word == \"[EOS]\":\n",
    "                    break\n",
    "                if remove_pad and word == \"[PAD]\":\n",
    "                    break\n",
    "                text.append(word)\n",
    "            text_list.append(\" \".join(text) if not split else text)\n",
    "        return text_list\n",
    "    \n",
    "\n",
    "tokenizer = Tokenizer(word2idx=word2idx, idx2word=idx2word)\n",
    "raw_text = [\"hello world\".split(), \"tokenize text datas with batch\".split(), \"this is a test\".split()]\n",
    "indices = tokenizer.encode(raw_text, padding_first=True)\n",
    "decode_text = tokenizer.decode(indices.tolist(), remove_bos=False, remove_eos=False, remove_pad=False)\n",
    "print(\"raw text\")\n",
    "for raw in raw_text:\n",
    "    print(raw)\n",
    "print(\"indices\")\n",
    "for index in indices:\n",
    "    print(index)\n",
    "print(\"decode text\")\n",
    "for decode in decode_text:\n",
    "    print(decode)"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:48.569154Z",
     "iopub.execute_input": "2023-12-08T03:56:48.569535Z",
     "iopub.status.idle": "2023-12-08T03:56:48.597133Z",
     "shell.execute_reply.started": "2023-12-08T03:56:48.569501Z",
     "shell.execute_reply": "2023-12-08T03:56:48.596078Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:33.598162Z",
     "start_time": "2025-02-27T04:06:33.584262Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "raw text\n",
      "['hello', 'world']\n",
      "['tokenize', 'text', 'datas', 'with', 'batch']\n",
      "['this', 'is', 'a', 'test']\n",
      "indices\n",
      "tensor([   0,    0,    0,    1, 4825,  182,    3])\n",
      "tensor([    1,     2,  3004,     2,    19, 19233,     3])\n",
      "tensor([   0,    1,   14,    9,    6, 2181,    3])\n",
      "decode text\n",
      "[PAD] [PAD] [PAD] [BOS] hello world [EOS]\n",
      "[BOS] [UNK] text [UNK] with batch [EOS]\n",
      "[PAD] [BOS] this is a test [EOS]\n"
     ]
    }
   ],
   "execution_count": 59
  },
  {
   "cell_type": "code",
   "source": [
    "# 看看训练集的数据\n",
    "\n",
    "tokenizer.decode(train_data[:2], remove_bos=False, remove_eos=False, remove_pad=False)"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:48.598454Z",
     "iopub.execute_input": "2023-12-08T03:56:48.598800Z",
     "iopub.status.idle": "2023-12-08T03:56:48.607972Z",
     "shell.execute_reply.started": "2023-12-08T03:56:48.598760Z",
     "shell.execute_reply": "2023-12-08T03:56:48.607067Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:33.603692Z",
     "start_time": "2025-02-27T04:06:33.599168Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[\"[BOS] this film was just brilliant casting location scenery story direction everyone's really suited the part they played and you could just imagine being there robert [UNK] is an amazing actor and now the same being director [UNK] father came from the same scottish island as myself so i loved the fact there was a real connection with this film the witty remarks throughout the film were great it was just brilliant so much that i bought the film as soon as it was released for [UNK] and would recommend it to everyone to watch and the fly fishing was amazing really cried at the end it was so sad and you know what they say if you cry at a film it must have been good and this definitely was also [UNK] to the two little boy's that played the [UNK] of norman and paul they were just brilliant children are often left out of the [UNK] list i think because the stars that play them all grown up are such a big profile for the whole film but these children are amazing and should be praised for what they have done don't you think the whole story was so lovely because it was true and was someone's life after all that was shared with us all\",\n",
       " \"[BOS] big hair big boobs bad music and a giant safety pin these are the words to best describe this terrible movie i love cheesy horror movies and i've seen hundreds but this had got to be on of the worst ever made the plot is paper thin and ridiculous the acting is an abomination the script is completely laughable the best is the end showdown with the cop and how he worked out who the killer is it's just so damn terribly written the clothes are sickening and funny in equal [UNK] the hair is big lots of boobs [UNK] men wear those cut [UNK] shirts that show off their [UNK] sickening that men actually wore them and the music is just [UNK] trash that plays over and over again in almost every scene there is trashy music boobs and [UNK] taking away bodies and the gym still doesn't close for [UNK] all joking aside this is a truly bad film whose only charm is to look back on the disaster that was the 80's and have a good old laugh at how bad everything was back then\"]"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 60
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 数据集与 DataLoader"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "source": [
    "from torch.utils.data import Dataset, DataLoader\n",
    "\n",
    "class IMDBDataset(Dataset):\n",
    "    def __init__(self, data, labels, remain_length=True):\n",
    "        if remain_length:\n",
    "            self.data = tokenizer.decode(data, remove_bos=False, remove_eos=False, remove_pad=False)\n",
    "        else:\n",
    "            # 缩减一下数据\n",
    "            self.data = tokenizer.decode(data)\n",
    "        self.labels = labels\n",
    "    \n",
    "    def __getitem__(self, index):\n",
    "        text = self.data[index]\n",
    "        label = self.labels[index]\n",
    "        return text, label\n",
    "    \n",
    "    def __len__(self):\n",
    "        return len(self.data)\n",
    "    \n",
    "    \n",
    "def collate_fct(batch):\n",
    "    text_list = [item[0].split() for item in batch]\n",
    "    label_list = [item[1] for item in batch]\n",
    "    # 这里使用 padding first\n",
    "    text_list = tokenizer.encode(text_list, padding_first=True).to(dtype=torch.int)\n",
    "    return text_list, torch.tensor(label_list).reshape(-1, 1).to(dtype=torch.float)\n",
    "\n",
    "\n",
    "# 用RNN，缩短序列长度\n",
    "train_ds = IMDBDataset(train_data, train_labels, remain_length=False)\n",
    "test_ds = IMDBDataset(test_data, test_labels, remain_length=False)"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:48.609141Z",
     "iopub.execute_input": "2023-12-08T03:56:48.609455Z",
     "iopub.status.idle": "2023-12-08T03:56:54.659024Z",
     "shell.execute_reply.started": "2023-12-08T03:56:48.609429Z",
     "shell.execute_reply": "2023-12-08T03:56:54.658211Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:35.558290Z",
     "start_time": "2025-02-27T04:06:33.604699Z"
    }
   },
   "outputs": [],
   "execution_count": 61
  },
  {
   "cell_type": "code",
   "source": [
    "batch_size = 128\n",
    "train_dl = DataLoader(train_ds, batch_size=batch_size, shuffle=True, collate_fn=collate_fct)\n",
    "test_dl = DataLoader(test_ds, batch_size=batch_size, shuffle=False, collate_fn=collate_fct)"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:54.660271Z",
     "iopub.execute_input": "2023-12-08T03:56:54.660748Z",
     "iopub.status.idle": "2023-12-08T03:56:54.675542Z",
     "shell.execute_reply.started": "2023-12-08T03:56:54.660707Z",
     "shell.execute_reply": "2023-12-08T03:56:54.674566Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:35.575034Z",
     "start_time": "2025-02-27T04:06:35.559296Z"
    }
   },
   "outputs": [],
   "execution_count": 62
  },
  {
   "cell_type": "code",
   "source": [
    "for text, label in train_dl:\n",
    "    print(text.shape, label.shape)\n",
    "    break"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:35.598764Z",
     "start_time": "2025-02-27T04:06:35.577348Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([128, 500]) torch.Size([128, 1])\n"
     ]
    }
   ],
   "execution_count": 63
  },
  {
   "cell_type": "markdown",
   "source": [],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 定义模型"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "source": [
    "class RNN(nn.Module):\n",
    "    def __init__(self, embedding_dim=16, hidden_dim=64, vocab_size=vocab_size, num_layers=1, bidirectional=False):\n",
    "        super(RNN, self).__init__()\n",
    "        self.embeding = nn.Embedding(vocab_size, embedding_dim)\n",
    "        self.rnn = nn.RNN(embedding_dim, hidden_dim, num_layers=num_layers, batch_first=True, bidirectional=bidirectional)\n",
    "        self.layer = nn.Linear(hidden_dim * (2 if bidirectional else 1), hidden_dim)\n",
    "        self.fc = nn.Linear(hidden_dim, 1)\n",
    "        \n",
    "    def forward(self, x):\n",
    "        # [bs, seq length]\n",
    "        x = self.embeding(x)\n",
    "        # [bs, seq length, embedding_dim] -> shape [bs, embedding_dim, seq length]\n",
    "        seq_output, final_hidden = self.rnn(x)\n",
    "        # [bs, seq length, hidden_dim], [*, bs, hidden_dim]\n",
    "        x = seq_output[:, -1, :]\n",
    "        # 取最后一个时间步的输出 (这也是为什么要设置padding_first=True的原因)\n",
    "        x = self.layer(x)\n",
    "        x = self.fc(x)\n",
    "        return x\n",
    "\n"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:54.680954Z",
     "iopub.execute_input": "2023-12-08T03:56:54.681375Z",
     "iopub.status.idle": "2023-12-08T03:56:54.704703Z",
     "shell.execute_reply.started": "2023-12-08T03:56:54.681337Z",
     "shell.execute_reply": "2023-12-08T03:56:54.703621Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:29:20.566160Z",
     "start_time": "2025-02-27T04:29:20.555621Z"
    }
   },
   "outputs": [],
   "execution_count": 76
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 训练"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "@torch.no_grad()\n",
    "def evaluating(model, dataloader, loss_fct):\n",
    "    loss_list = []\n",
    "    pred_list = []\n",
    "    label_list = []\n",
    "    for datas, labels in dataloader:\n",
    "        datas = datas.to(device)\n",
    "        labels = labels.to(device)\n",
    "        # 前向计算\n",
    "        logits = model(datas)\n",
    "        loss = loss_fct(logits, labels)         # 验证集损失\n",
    "        loss_list.append(loss.item())\n",
    "        # 二分类\n",
    "        preds = logits > 0\n",
    "        pred_list.extend(preds.cpu().numpy().tolist())\n",
    "        label_list.extend(labels.cpu().numpy().tolist())\n",
    "        \n",
    "    acc = accuracy_score(label_list, pred_list)\n",
    "    return np.mean(loss_list), acc\n"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:54.705794Z",
     "iopub.execute_input": "2023-12-08T03:56:54.706059Z",
     "iopub.status.idle": "2023-12-08T03:56:54.713704Z",
     "shell.execute_reply.started": "2023-12-08T03:56:54.706035Z",
     "shell.execute_reply": "2023-12-08T03:56:54.712738Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:35.622366Z",
     "start_time": "2025-02-27T04:06:35.616146Z"
    }
   },
   "outputs": [],
   "execution_count": 65
  },
  {
   "cell_type": "code",
   "source": [
    "from torch.utils.tensorboard import SummaryWriter\n",
    "\n",
    "\n",
    "class TensorBoardCallback:\n",
    "    def __init__(self, log_dir, flush_secs=10):\n",
    "        \"\"\"\n",
    "        Args:\n",
    "            log_dir (str): dir to write log.\n",
    "            flush_secs (int, optional): write to dsk each flush_secs seconds. Defaults to 10.\n",
    "        \"\"\"\n",
    "        self.writer = SummaryWriter(log_dir=log_dir, flush_secs=flush_secs)\n",
    "\n",
    "    def draw_model(self, model, input_shape):\n",
    "        self.writer.add_graph(model, input_to_model=torch.randn(input_shape))\n",
    "        \n",
    "    def add_loss_scalars(self, step, loss, val_loss):\n",
    "        self.writer.add_scalars(\n",
    "            main_tag=\"training/loss\", \n",
    "            tag_scalar_dict={\"loss\": loss, \"val_loss\": val_loss},\n",
    "            global_step=step,\n",
    "            )\n",
    "        \n",
    "    def add_acc_scalars(self, step, acc, val_acc):\n",
    "        self.writer.add_scalars(\n",
    "            main_tag=\"training/accuracy\",\n",
    "            tag_scalar_dict={\"accuracy\": acc, \"val_accuracy\": val_acc},\n",
    "            global_step=step,\n",
    "        )\n",
    "        \n",
    "    def add_lr_scalars(self, step, learning_rate):\n",
    "        self.writer.add_scalars(\n",
    "            main_tag=\"training/learning_rate\",\n",
    "            tag_scalar_dict={\"learning_rate\": learning_rate},\n",
    "            global_step=step,\n",
    "            \n",
    "        )\n",
    "    \n",
    "    def __call__(self, step, **kwargs):\n",
    "        # add loss\n",
    "        loss = kwargs.pop(\"loss\", None)\n",
    "        val_loss = kwargs.pop(\"val_loss\", None)\n",
    "        if loss is not None and val_loss is not None:\n",
    "            self.add_loss_scalars(step, loss, val_loss)\n",
    "        # add acc\n",
    "        acc = kwargs.pop(\"acc\", None)\n",
    "        val_acc = kwargs.pop(\"val_acc\", None)\n",
    "        if acc is not None and val_acc is not None:\n",
    "            self.add_acc_scalars(step, acc, val_acc)\n",
    "        # add lr\n",
    "        learning_rate = kwargs.pop(\"lr\", None)\n",
    "        if learning_rate is not None:\n",
    "            self.add_lr_scalars(step, learning_rate)\n"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:54.714985Z",
     "iopub.execute_input": "2023-12-08T03:56:54.715274Z",
     "iopub.status.idle": "2023-12-08T03:56:54.727971Z",
     "shell.execute_reply.started": "2023-12-08T03:56:54.715249Z",
     "shell.execute_reply": "2023-12-08T03:56:54.726997Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:35.632864Z",
     "start_time": "2025-02-27T04:06:35.624372Z"
    }
   },
   "outputs": [],
   "execution_count": 66
  },
  {
   "cell_type": "markdown",
   "source": [
    "### Save Best\n"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "source": [
    "class SaveCheckpointsCallback:\n",
    "    def __init__(self, save_dir, save_step=5000, save_best_only=True):\n",
    "        \"\"\"\n",
    "        Save checkpoints each save_epoch epoch. \n",
    "        We save checkpoint by epoch in this implementation.\n",
    "        Usually, training scripts with pytorch evaluating model and save checkpoint by step.\n",
    "\n",
    "        Args:\n",
    "            save_dir (str): dir to save checkpoint\n",
    "            save_epoch (int, optional): the frequency to save checkpoint. Defaults to 1.\n",
    "            save_best_only (bool, optional): If True, only save the best model or save each model at every epoch.\n",
    "        \"\"\"\n",
    "        self.save_dir = save_dir\n",
    "        self.save_step = save_step\n",
    "        self.save_best_only = save_best_only\n",
    "        self.best_metrics = -1\n",
    "        \n",
    "        # mkdir\n",
    "        if not os.path.exists(self.save_dir):\n",
    "            os.mkdir(self.save_dir)\n",
    "        \n",
    "    def __call__(self, step, state_dict, metric=None):\n",
    "        if step % self.save_step > 0:\n",
    "            return\n",
    "        \n",
    "        if self.save_best_only:\n",
    "            assert metric is not None\n",
    "            if metric >= self.best_metrics:\n",
    "                # save checkpoints\n",
    "                torch.save(state_dict, os.path.join(self.save_dir, \"best.ckpt\"))\n",
    "                # update best metrics\n",
    "                self.best_metrics = metric\n",
    "        else:\n",
    "            torch.save(state_dict, os.path.join(self.save_dir, f\"{step}.ckpt\"))\n",
    "\n"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:54.731416Z",
     "iopub.execute_input": "2023-12-08T03:56:54.731736Z",
     "iopub.status.idle": "2023-12-08T03:56:54.741180Z",
     "shell.execute_reply.started": "2023-12-08T03:56:54.731693Z",
     "shell.execute_reply": "2023-12-08T03:56:54.740443Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:35.640977Z",
     "start_time": "2025-02-27T04:06:35.634366Z"
    }
   },
   "outputs": [],
   "execution_count": 67
  },
  {
   "cell_type": "markdown",
   "source": [
    "### Early Stop"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "source": [
    "class EarlyStopCallback:\n",
    "    def __init__(self, patience=5, min_delta=0.01):\n",
    "        \"\"\"\n",
    "\n",
    "        Args:\n",
    "            patience (int, optional): Number of epochs with no improvement after which training will be stopped.. Defaults to 5.\n",
    "            min_delta (float, optional): Minimum change in the monitored quantity to qualify as an improvement, i.e. an absolute \n",
    "                change of less than min_delta, will count as no improvement. Defaults to 0.01.\n",
    "        \"\"\"\n",
    "        self.patience = patience\n",
    "        self.min_delta = min_delta\n",
    "        self.best_metric = -1\n",
    "        self.counter = 0\n",
    "        \n",
    "    def __call__(self, metric):\n",
    "        if metric >= self.best_metric + self.min_delta:\n",
    "            # update best metric\n",
    "            self.best_metric = metric\n",
    "            # reset counter \n",
    "            self.counter = 0\n",
    "        else: \n",
    "            self.counter += 1\n",
    "            \n",
    "    @property\n",
    "    def early_stop(self):\n",
    "        return self.counter >= self.patience\n"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:54.742415Z",
     "iopub.execute_input": "2023-12-08T03:56:54.742724Z",
     "iopub.status.idle": "2023-12-08T03:56:54.753175Z",
     "shell.execute_reply.started": "2023-12-08T03:56:54.742698Z",
     "shell.execute_reply": "2023-12-08T03:56:54.752241Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:06:35.648662Z",
     "start_time": "2025-02-27T04:06:35.642977Z"
    }
   },
   "outputs": [],
   "execution_count": 68
  },
  {
   "cell_type": "code",
   "source": [
    "# 训练\n",
    "def training(\n",
    "    model, \n",
    "    train_loader, \n",
    "    val_loader, \n",
    "    epoch, \n",
    "    loss_fct, \n",
    "    optimizer, \n",
    "    tensorboard_callback=None,\n",
    "    save_ckpt_callback=None,\n",
    "    early_stop_callback=None,\n",
    "    eval_step=500,\n",
    "    ):\n",
    "    record_dict = {\n",
    "        \"train\": [],\n",
    "        \"val\": []\n",
    "    }\n",
    "    \n",
    "    global_step = 0\n",
    "    model.train()\n",
    "    with tqdm(total=epoch * len(train_loader)) as pbar:\n",
    "        for epoch_id in range(epoch):\n",
    "            # training\n",
    "            for datas, labels in train_loader:\n",
    "                datas = datas.to(device)\n",
    "                labels = labels.to(device)\n",
    "                # 梯度清空\n",
    "                optimizer.zero_grad()\n",
    "                # 模型前向计算\n",
    "                logits = model(datas)\n",
    "                # 计算损失\n",
    "                loss = loss_fct(logits, labels)\n",
    "                # 梯度回传\n",
    "                loss.backward()\n",
    "                # 调整优化器，包括学习率的变动等\n",
    "                optimizer.step()\n",
    "                preds = logits > 0\n",
    "            \n",
    "                acc = accuracy_score(labels.cpu().numpy(), preds.cpu().numpy())    \n",
    "                loss = loss.cpu().item()\n",
    "                # record\n",
    "                \n",
    "                record_dict[\"train\"].append({\n",
    "                    \"loss\": loss, \"acc\": acc, \"step\": global_step\n",
    "                })\n",
    "                \n",
    "                # evaluating\n",
    "                if global_step % eval_step == 0:\n",
    "                    model.eval()\n",
    "                    val_loss, val_acc = evaluating(model, val_loader, loss_fct)\n",
    "                    record_dict[\"val\"].append({\n",
    "                        \"loss\": val_loss, \"acc\": val_acc, \"step\": global_step\n",
    "                    })\n",
    "                    model.train()\n",
    "                    \n",
    "                    # 1. 使用 tensorboard 可视化\n",
    "                    if tensorboard_callback is not None:\n",
    "                        tensorboard_callback(\n",
    "                            global_step, \n",
    "                            loss=loss, val_loss=val_loss,\n",
    "                            acc=acc, val_acc=val_acc,\n",
    "                            lr=optimizer.param_groups[0][\"lr\"],\n",
    "                            )\n",
    "                \n",
    "                    # 2. 保存模型权重 save model checkpoint\n",
    "                    if save_ckpt_callback is not None:\n",
    "                        save_ckpt_callback(global_step, model.state_dict(), metric=val_acc)\n",
    "\n",
    "                    # 3. 早停 Early Stop\n",
    "                    if early_stop_callback is not None:\n",
    "                        early_stop_callback(val_acc)\n",
    "                        if early_stop_callback.early_stop:\n",
    "                            print(f\"Early stop at epoch {epoch_id} / global_step {global_step}\")\n",
    "                            return record_dict\n",
    "                    \n",
    "                # udate step\n",
    "                global_step += 1\n",
    "                pbar.update(1)\n",
    "                pbar.set_postfix({\"epoch\": epoch_id})\n",
    "        \n",
    "    return record_dict\n",
    "        \n",
    "\n",
    "epoch = 20\n",
    "\n",
    "\n",
    "model = RNN()\n",
    "# 1. 定义损失函数 采用交叉熵损失 (但是二分类)\n",
    "loss_fct = F.binary_cross_entropy_with_logits\n",
    "# 2. 定义优化器 采用 adam\n",
    "# Optimizers specified in the torch.optim package\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=0.001)\n",
    "\n",
    "# 1. tensorboard 可视化\n",
    "# if not os.path.exists(\"runs\"):\n",
    "#     os.mkdir(\"runs\")\n",
    "# tensorboard_callback = TensorBoardCallback(\"runs/imdb-rnn\")\n",
    "# tensorboard_callback.draw_model(model, [1, MAX_LENGTH])\n",
    "# 2. save best\n",
    "if not os.path.exists(\"checkpoints\"):\n",
    "    os.makedirs(\"checkpoints\")\n",
    "save_ckpt_callback = SaveCheckpointsCallback(\"checkpoints/imdb-rnn\", save_step=len(train_dl), save_best_only=True)\n",
    "# 3. early stop\n",
    "early_stop_callback = EarlyStopCallback(patience=10)\n",
    "\n",
    "model = model.to(device)\n",
    "record = training(\n",
    "    model, \n",
    "    train_dl, \n",
    "    test_dl, \n",
    "    epoch, \n",
    "    loss_fct, \n",
    "    optimizer, \n",
    "    tensorboard_callback=None,\n",
    "    save_ckpt_callback=save_ckpt_callback,\n",
    "    early_stop_callback=early_stop_callback,\n",
    "    eval_step=len(train_dl)\n",
    "    )"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T03:56:54.754553Z",
     "iopub.execute_input": "2023-12-08T03:56:54.754886Z",
     "iopub.status.idle": "2023-12-08T04:02:37.889132Z",
     "shell.execute_reply.started": "2023-12-08T03:56:54.754861Z",
     "shell.execute_reply": "2023-12-08T04:02:37.888109Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:14:58.662498Z",
     "start_time": "2025-02-27T04:09:39.711512Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/3920 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "0c9731a139264160a0002416c4296b90"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 73
  },
  {
   "cell_type": "code",
   "source": [
    "#画线要注意的是损失是不一定在零到1之间的\n",
    "def plot_learning_curves(record_dict, sample_step=500):\n",
    "    # build DataFrame\n",
    "    train_df = pd.DataFrame(record_dict[\"train\"]).set_index(\"step\").iloc[::sample_step]\n",
    "    val_df = pd.DataFrame(record_dict[\"val\"]).set_index(\"step\")\n",
    "\n",
    "    # plot\n",
    "    fig_num = len(train_df.columns)\n",
    "    fig, axs = plt.subplots(1, fig_num, figsize=(5 * fig_num, 5))\n",
    "    for idx, item in enumerate(train_df.columns):    \n",
    "        axs[idx].plot(train_df.index, train_df[item], label=f\"train_{item}\")\n",
    "        axs[idx].plot(val_df.index, val_df[item], label=f\"val_{item}\")\n",
    "        axs[idx].grid()\n",
    "        axs[idx].legend()\n",
    "        # axs[idx].set_xticks(range(0, train_df.index[-1], 5000))\n",
    "        # axs[idx].set_xticklabels(map(lambda x: f\"{int(x/1000)}k\", range(0, train_df.index[-1], 5000)))\n",
    "        axs[idx].set_xlabel(\"step\")\n",
    "    \n",
    "    plt.show()\n",
    "\n",
    "plot_learning_curves(record, sample_step=10)  #横坐标是 steps"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T04:02:37.890371Z",
     "iopub.execute_input": "2023-12-08T04:02:37.890648Z",
     "iopub.status.idle": "2023-12-08T04:02:38.263775Z",
     "shell.execute_reply.started": "2023-12-08T04:02:37.890625Z",
     "shell.execute_reply": "2023-12-08T04:02:38.262830Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:15:05.202344Z",
     "start_time": "2025-02-27T04:15:04.965128Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0MAAAHACAYAAABge7OwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsXQeU3NTZvZqyfde9d2Nsgxu9mF5MMZAECKG30EtC4E9CCYReQgsQWugtBEJvxthgmrFxL7j3bu961/b2MkX/+SS9mSfNk0ZTd9b77jl7dopG0mie3nvfu/e7n6KqqgoJCQkJCQkJCQkJCYl2Bk9rn4CEhISEhISEhISEhERrQAZDEhISEhISEhISEhLtEjIYkpCQkJCQkJCQkJBol5DBkISEhISEhISEhIREu4QMhiQkJCQkJCQkJCQk2iVkMCQhISEhISEhISEh0S4hgyEJCQkJCQkJCQkJiXYJGQxJSEhISEhISEhISLRL+NAGEA6HsWXLFpSWlkJRlNY+HQkJCYl2A6rLXVtbi969e8PjketnDHJckpCQkNg9xqY2EQzRgNOvX7/WPg0JCQmJdouNGzeib9++rX0aOQM5LklISEjsHmNTmwiGaOWNfeGysrKEPx8IBDBp0iSccMIJ8Pv9GTjD9gF5HdMDeR1Th7yG2buONTU12qSf9cMSOuS4lBuQ1zE9kNcxPZDXsW2OTW0iGGISBBpwkh10ioqKtM/Kxpk85HVMD+R1TB3yGmb/OkopmBlyXMoNyOuYHsjrmB7I69g2xyYpAJeQkJCQkJCQkJCQaJeQwZCEhISEhISEhISERLuEDIYkJCQkJCQkJCQkJNol2kTOkISEhISERFu0fg0GgwiFQkJNvM/nQ1NTk/B9CXfI1HX0er3afmWunITE7g8ZDElISEhISKQZLS0t2Lp1KxoaGmwDpZ49e2pudHLCnTwyeR0pgbtXr17Iy8tL634lJCRyCzIYkpCQkJCQSHNB1rVr12rsAhUEpMm0daJO29TV1aGkpEQWs00BmbiOFGBRMLt9+3btd9xzzz3lbyQhsRtDBkMSEhISEhJpBE2kaZJONTCIXRCB3qftCgoK5EQ7BWTqOhYWFmqWvuvXr4/sX0JCYveE7IElJCQkJCQyABnktG3I309Con1A3ukSEhISEhISEhISEu0SMhiSkJCQkJCQkJCQkGiXkMGQhISEhISERNoxcOBAPPHEE619GhISEhKOkAYKEhISEhISEhqOPvpo7LPPPmkJYmbNmoXi4uK0nJeEhIREpiCDIQkJCQkJCQnXttNU3JQKksZDt27dsnJOEhISEqlAyuQkJCTaFd6esQFXvzkHzcH0VauXkHATRDS0BE1/jS2hmNcy8UfHdoNLLrkE33//PZ588kmtLhL9vfbaa9r/L7/8Evvvvz/y8/MxdepUrF69Gr/+9a/Ro0cPrcbPgQceiK+//tpRJkf7eemll3D66adrluNUv+fTTz91dW4UgF122WUYNGiQZns9bNgw7TyteOWVVzBixAjtPKlg6vXXXx95b9euXbjqqqu0cyar7JEjR+Lzzz93dXyJ1PDQl8tw16eLW/s0JCSEkMyQhIREu8JtH/2i/X9/ziacf/CA1j4diXaCxkAIe//9q1Y59pJ7TkRRXvzhnoKLFStWaEHCPffco722eLE+gb3lllvw6KOPYvDgwejUqRM2btyI8ePH4/7779cCjzfeeAOnnXYali9fjv79+9se4+6778bDDz+MRx55BP/6179w/vnna7V8OnfuHLeeUN++ffHee++hS5cumDZtGq688kotsDnppJO0bZ577jncdNNNeOihh3DyySejuroaP/30U+Tz9FptbS3eeust7LHHHliyZIlWGFcis6hrDuL571drj689Zg90L5U1myRyCzIYkpCQaJeoaQy29ilIpBnPPPOMNsnetm0bxowZo022DzroIOG2gUAADz74IF5//XVs3rxZYxr+8Y9/RCbW7REdOnRAXl6extr07NlTe23ZsmXafwqOxo0bF9mWghe6xgz33nsvPvroI43p4dkYEft07rnnao8feOABPPXUU5g5c2bc604FUCmQYiCGaPr06VpwxD5733334f/+7/9www03RLYjxopArBUdZ+nSpRg6dKj2GgV2EplHdWOgtU9BQsIRMhiSkJCQkGjzePfddzVW4Pnnn8fBBx+sybNOPPFEjano3r17zPa33367xhC8+OKLGD58OL766itNvkWMw7777pv28yv0ezWGhoGYitqaWpSWlWa8uCcdO1UccMABpud1dXW466678MUXX2Dr1q0IBoNobGzEhg0bHPczevToyGMyVygrK0NFRYXrYJdkcHQMOlZLS4tm9kCgfWzZsgXHHXec8LPz58/XmCUWCElk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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 74
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 评估"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "source": [
    "# dataload for evaluating\n",
    "\n",
    "# load checkpoints\n",
    "model.load_state_dict(torch.load(\"checkpoints/imdb-rnn/best.ckpt\", map_location=\"cpu\"))\n",
    "\n",
    "model.eval()\n",
    "loss, acc = evaluating(model, test_dl, loss_fct)\n",
    "print(f\"loss:     {loss:.4f}\\naccuracy: {acc:.4f}\")"
   ],
   "metadata": {
    "execution": {
     "iopub.status.busy": "2023-12-08T04:02:38.265426Z",
     "iopub.execute_input": "2023-12-08T04:02:38.265820Z",
     "iopub.status.idle": "2023-12-08T04:02:45.859021Z",
     "shell.execute_reply.started": "2023-12-08T04:02:38.265777Z",
     "shell.execute_reply": "2023-12-08T04:02:45.858108Z"
    },
    "trusted": true,
    "ExecuteTime": {
     "end_time": "2025-02-27T04:15:20.106831Z",
     "start_time": "2025-02-27T04:15:14.008435Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     0.4738\n",
      "accuracy: 0.7931\n"
     ]
    }
   ],
   "execution_count": 75
  }
 ]
}
